package jscinttools.datafit.scint;
import jscinttools.datafit.scint.PulseFitFunc;
/**
 *  Description of the Interface
 *
 *@author     Marc-Antoine Verdier
 *@created    15 juin 2011
 */
public interface PulseFuncFactory
{
	/**
	 *  Setup the FitFunction as A0(exp(-(t-t0)/tau0)-exp(-(t-t0))/tauR))+A1exp(-(t-t0)/tau1)+...+P0
	 *  and the parameters in this order: A0,tau0,A1,tau1,...,t0,tauR,P0
	 *
	 *@return    PulseFitFunc
	 */
	public PulseFitFunc nExpDelayRiseBck();


	/**
	 *  Setup the FitFunction as A0(exp(-t/tau0)-exp(-t/tauR))+A1exp(-t/tau1)+...+P0
	 *  and the parameters in this order: A0,tau0,A1,tau1,...,tauR,P0
	 *
	 *@return    PulseFitFunc
	 */
	public PulseFitFunc nExpRiseBck();


	/**
	 *  Setup the FitFunction as A0(exp(-(t-t0)/tau0)-exp(-(t-t0))/tauR))+A1exp(-(t-t0)/tau1)+...
	 *  and the parameters in this order: A0,tau0,A1,tau1,...,t0,tauR
	 *
	 *@return    Description of the Return Value
	 */
	public PulseFitFunc nExpDelayRise();


	/**
	 *  Setup the FitFunction as A0(exp(-t/tau0)-exp(-t/tauR))+A1exp(-t/tau1)+...
	 *  and the parameters in this order: A0,tau0,A1,tau1,...,tauR
	 *
	 *@return    Description of the Return Value
	 */
	public PulseFitFunc nExpRise();


	/**
	 *  Setup the FitFunction as A0exp(-t/tau0)+A1exp(-t/tau1)+...+P0 and the
	 *  parameters in this order: A0,tau0,A1,tau1,...,P0
	 *
	 *@return    Description of the Return Value
	 */
	public PulseFitFunc nExpBck();


	/**
	 *  Setup the FitFunction as A0exp(-t/tau0)+A1exp(-t/tau1)+... and the
	 *  parameters in this order: A0,tau0,A1,tau1,...
	 *
	 *@return    Description of the Return Value
	 */
	public PulseFitFunc nExp();
}

